from __future__ import print_function
import httplib2
import os
import pprint

from apiclient import discovery
import oauth2client
from oauth2client import client
from oauth2client import tools

import datetime

try:
    import argparse
    flags = argparse.ArgumentParser(parents=[tools.argparser]).parse_args()
except ImportError:
    flags = None

SCOPES = 'https://www.googleapis.com/auth/calendar'
CLIENT_SECRET_FILE = 'client_secret.json'
APPLICATION_NAME = 'eMHub'


def get_credentials():
    """Gets valid user credentials from storage.

    If nothing has been stored, or if the stored credentials are invalid,
    the OAuth2 flow is completed to obtain the new credentials.

    Returns:
        Credentials, the obtained credential.
    """
    home_dir = os.path.expanduser('~')
    credential_dir = os.path.join(home_dir, '.credentials')
    if not os.path.exists(credential_dir):
        os.makedirs(credential_dir)
    credential_path = os.path.join(credential_dir,
                                   'calendar-python-quickstart.json')

    store = oauth2client.file.Storage(credential_path)
    credentials = store.get()
    if not credentials or credentials.invalid:
        flow = client.flow_from_clientsecrets(CLIENT_SECRET_FILE, SCOPES)
        flow.user_agent = APPLICATION_NAME
        if flags:
            credentials = tools.run_flow(flow, store, flags)
        else: # Needed only for compatibility with Python 2.6
            credentials = tools.run(flow, store)
        print('Storing credentials to ' + credential_path)
    return credentials

def main():
    """Shows basic usage of the Google Calendar API.

    Creates a Google Calendar API service object and outputs a list of the next
    10 events on the user's calendar.
    """
    credentials = get_credentials()
    http = credentials.authorize(httplib2.Http())
    service = discovery.build('calendar', 'v3', http=http)

    # now = datetime.datetime.utcnow().isoformat() + 'Z' # 'Z' indicates UTC time
    # print('Getting the upcoming 10 events')
    # eventsResult = service.events().list(
    #     calendarId='primary', timeMin=now, maxResults=10, singleEvents=True,
    #     orderBy='startTime').execute()
    # events = eventsResult.get('items', [])

    # if not events:
    #     print('No upcoming events found.')
    # for event in events:
    #     start = event['start'].get('dateTime', event['start'].get('date'))
    #     print(start, event['summary'])
        
    
    ##Creating a calendar
    # calendar = {
    #     'summary': 'calendarSummary',
    #     'timeZone': 'America/New_York'
    # }
    
    # created_calendar = service.calendars().insert(body=calendar).execute()
    # print(created_calendar)
    
    calendar = service.calendars().get(calendarId='l9am6s2f1j5b11cja3ipnv4djk@group.calendar.google.com').execute()
    # print(calendar)
    # page_token = None
    # while True:
    events = service.events().list(calendarId='l9am6s2f1j5b11cja3ipnv4djk@group.calendar.google.com').execute()
    	# for event in events['items']:
    		# print (event['summary'])
    	# page_token = events.get('nextPageToken')
    	# if not page_token:
    		# break
    events = list((event['summary'],event['id']) for event in events['items'])
    # events = events.get('items', [])
    # for event in events:
    	# print ("\n",event,"\n\n")

    print (events)
    eventId = '807tu4foc0qjlc8s26tcjpofpk'
    credentials = get_credentials()
    http = credentials.authorize(httplib2.Http())
    service = discovery.build('calendar', 'v3', http=http)

    # calendars = service.calendarList().list(pageToken=None).execute(http=http)
    # pprint.pprint(calendars)
    
    event = service.events().get(calendarId='l9am6s2f1j5b11cja3ipnv4djk@group.calendar.google.com', eventId=eventId).execute()
    
    order = ['status', 'summary', 'description', 'location', 'creator', 'created', 'start', 'end', 'htmlLink']
    temp = []
    for item in order:
    	try:
    		temp.append(event[item])
    	except (KeyError):
    		continue
    # print (temp)

    # print (event,"\n\n")
    # temp.append(event['kind'])
    # temp.append(event['etag'])
    # temp.append(event['id'])
    # # temp.append(event[''])
    # temp.append(event['status'])
    # temp.append(event['htmlLink'])
    # temp.append(event['created'])
    # temp.append(event['updated'])
    # temp.append(event['summary'])
    # temp.append(event['description'])
    # # temp.append(event['location'])
    # # temp.append(event['colorId'])
    # temp.append(event['creator'])
    # print(temp)

	# {    "id": string,
	#    "email": string,
	#    "displayName": string,
	#    "self": boolean
	#  	},


	# "organizer": {
	#     "id": string,
	#     "email": string,
	#     "displayName": string,
	#     "self": boolean
	#   },
	#   "start": {
	#     "date": date,
	#     "dateTime": datetime,
	#     "timeZone": string
	#   },
	#   "end": {
	#     "date": date,
	#     "dateTime": datetime,
	#     "timeZone": string
	#   },
	#   "endTimeUnspecified": boolean,
	#   "recurrence": [
	#     string
	#   ],
	#   "recurringEventId": string,
	#   "originalStartTime": {
	#     "date": date,
	#     "dateTime": datetime,
	#     "timeZone": string
	#   },
	#   "transparency": string,
	#   "visibility": string,
	#   "iCalUID": string,
	#   "sequence": integer,
	#   "attendees": [
	#     {
	#       "id": string,
	#       "email": string,
	#       "displayName": string,
	#       "organizer": boolean,
	#       "self": boolean,
	#       "resource": boolean,
	#       "optional": boolean,
	#       "responseStatus": string,
	#       "comment": string,
	#       "additionalGuests": integer
	#     }
	#   ],
	#   "attendeesOmitted": boolean,
	#   "extendedProperties": {
	#     "private": {
	#       (key): string
	#     },
	#     "shared": {
	#       (key): string
	#     }
	#   },
	#   "hangoutLink": string,
	#   "gadget": {
	#     "type": string,
	#     "title": string,
	#     "link": string,
	#     "iconLink": string,
	#     "width": integer,
	#     "height": integer,
	#     "display": string,
	#     "preferences": {
	#       (key): string
	#     }
	#   },
	#   "anyoneCanAddSelf": boolean,
	#   "guestsCanInviteOthers": boolean,
	#   "guestsCanModify": boolean,
	#   "guestsCanSeeOtherGuests": boolean,
	#   "privateCopy": boolean,
	#   "locked": boolean,
	#   "reminders": {
	#     "useDefault": boolean,
	#     "overrides": [
	#       {
	#         "method": string,
	#         "minutes": integer
	#       }
	#     ]
	#   },
	#   "source": {
	#     "url": string,
	#     "title": string
	#   },
	#   "attachments": [
	#     {
	#       "fileUrl": string,
	#       "title": string,
	#       "mimeType": string,
	#       "iconLink": string,
	#       "fileId": string
	#     }
	#   ]

if __name__ == '__main__':
    main()